package collection_test.list_map;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;

public class ConcurrentHashMapTest {
    public static void main(String[] args) {
        ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();//支持高并发
        ConcurrentSkipListMap concurrentSkipListMap = new ConcurrentSkipListMap();//支持高并发 且排序

        /** 在普通的集合里，说到Map，我们想到比较典型的就是两种：HashMap和TreeMap
         *    为什么在高并发里，没有TreeMap这样的数据结构来实现排序？
         *    我们知道，链表的查询时间复杂度是o（n），但如果通过树结构，使用红黑树进行实现的话，可以达到o(logn)的查询速度
         *    TreeMap就是使用红黑树实现排序的，但在高并发中，引入了cas加锁的情况下，再用树结构进行实现的话，复杂度过高，因此折中做法使用了跳表的数据结构进行实现
         */


        /**   跳表：  多划分出几层来，  当查找的时候从最高层进行查找， 然后逐渐缩小范围，等到第一层的时候可以显著缩小了查询的范围，提高查询速度。
         *
         *  1                                              7                                  11
         *  1               3                    6                        9                11
         *  1 -> 2 -> 3-> 4-> 5-> 6-> 7 -> 8 -> 9 -> 10 -> 11 -> 12
         */
    }
}
